﻿<!--
	/* ******************************************************** */
	/* Arcans Project (2010)                                    */
	/* Jeu sous forme d'application web entièrement conçu       */
	/* et réalisé par Killian Le Maitre                         */
	/* Jeu sous licence GNU GPL v3 (voir NOTICE et COPYING)     */
	/* ******************************************************** */

	Modifier la variable javascript "adress_info" avec l'adresse de l'application web.
	Copier / coller ce code dans un gadget HTML/javascript de blogger pour le faire fonctionner.
	Vérifier que le fichier social.php existe bien.
-->
<script type="text/javascript">
	//****************************
	var adress_info = "";
	//****************************
	Number.prototype.toHexStr = function() {
		var s="", v;
		for (var i=7; i>=0; i--) { v = (this>>>(i*4)) & 0xf; s += v.toString(16); }
		return s;
	}
	function ROTR(n, x) { return (x >>> n) | (x << (32-n)); }
	function Sigma0(x) { return ROTR(2,  x) ^ ROTR(13, x) ^ ROTR(22, x); }
	function Sigma1(x) { return ROTR(6,  x) ^ ROTR(11, x) ^ ROTR(25, x); }
	function sigma0(x) { return ROTR(7,  x) ^ ROTR(18, x) ^ (x>>>3);  }
	function sigma1(x) { return ROTR(17, x) ^ ROTR(19, x) ^ (x>>>10); }
	function Ch(x, y, z)  { return (x & y) ^ (~x & z); }
	function Maj(x, y, z) { return (x & y) ^ (x & z) ^ (y & z); }
	var hashFun = function (chaine) {
		var K = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]; var H = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19]; chaine += String.fromCharCode(0x80);
		var l = chaine.length/4 + 2; var N = Math.ceil(l/16); var M = new Array(N);
		for (var i=0; i<N; i++) {
			M[i] = new Array(16);
			for (var j=0; j<16; j++) M[i][j] = (chaine.charCodeAt(i*64+j*4)<<24) | (chaine.charCodeAt(i*64+j*4+1)<<16) | (chaine.charCodeAt(i*64+j*4+2)<<8) | (chaine.charCodeAt(i*64+j*4+3));
		}
		M[N-1][14] = ((chaine.length-1)*8) / Math.pow(2, 32); M[N-1][14] = Math.floor(M[N-1][14])
		M[N-1][15] = ((chaine.length-1)*8) & 0xffffffff;
		var W = new Array(64);
		var a, b, c, d, e, f, g, h;
		for (var i=0; i<N; i++) {
			for (var t=0;  t<16; t++) { W[t] = M[i][t]; }
			for (var t=16; t<64; t++) { W[t] = (sigma1(W[t-2]) + W[t-7] + sigma0(W[t-15]) + W[t-16]) & 0xffffffff; }
			a = H[0]; b = H[1]; c = H[2]; d = H[3]; e = H[4]; f = H[5]; g = H[6]; h = H[7];
			for (var t=0; t<64; t++) {
				var T1 = h + Sigma1(e) + Ch(e, f, g) + K[t] + W[t];
				var T2 = Sigma0(a) + Maj(a, b, c);
				h = g; g = f; f = e; e = (d + T1) & 0xffffffff; d = c; c = b; b = a; a = (T1 + T2) & 0xffffffff;
			}
			H[0] = (H[0]+a) & 0xffffffff; H[1] = (H[1]+b) & 0xffffffff; H[2] = (H[2]+c) & 0xffffffff; H[3] = (H[3]+d) & 0xffffffff; H[4] = (H[4]+e) & 0xffffffff; H[5] = (H[5]+f) & 0xffffffff; H[6] = (H[6]+g) & 0xffffffff; H[7] = (H[7]+h) & 0xffffffff;
		}
		return H[0].toHexStr() + H[1].toHexStr() + H[2].toHexStr() + H[3].toHexStr() + H[4].toHexStr() + H[5].toHexStr() + H[6].toHexStr() + H[7].toHexStr();
	}
	var connectFun = function () {
		var pseudo = document.getElementById("pseudo_arcans").value;
		var passwd = document.getElementById("passwd_arcans").value;
		var regval = new RegExp(/^[\w]+[\w\-\.]{2,}$/);
		if (regval.test(pseudo)) {
			if (regval.test(passwd)) {
				try { var xhr = new ActiveXObject('Msxml2.XMLHTTP'); }
				catch (e) {
					try { var xhr = new ActiveXObject('Microsoft.XMLHTTP'); }
					catch (e2) {
						try { var xhr = new XMLHttpRequest(); }
						catch (e3) { xhr = false; }
					}
				}
				xhr.onreadystatechange = function() {
					if(xhr.readyState  == 4) {
						if(xhr.status  == 200) {
							var reponse = xhr.responseText;
							if (reponse == 1) affichage ("go_site");
							else affichage ("regajax");
						}
					}
				}
				xhr.open( "POST", adress_info + "social.php",  true);
				xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
				var donnees = 'info1=blog&info2=' + pseudo + '&info3=' + hashFun(passwd);
				xhr.send(donnees);
			}
			else affichage ("regpwd");
		}
		else affichage ("regpseudo");
	}
	var affichage = function (choix) {
	document.body.scrollTop='0px';
	document.body.style.overflow = "hidden";
	var voile = document.createElement("div");
	voile.setAttribute("id", "voile");
	voile.style.backgroundColor = "black";
	voile.style.opacity = "0";
	voile.style.position = "absolute";
	voile.style.top = "0"; voile.style.left = "0"; voile.style.width = "100%"; voile.style.height = "100%"; document.body.appendChild(voile);
		for (var i = 0;i < 8;i++) window.setTimeout('voile.style.opacity = "0.' + i + '";', 50*i);
		var encart = document.createElement("div");
		encart.setAttribute("id", "encart");
		encart.style.backgroundColor = "white";
		encart.style.position = "absolute";
		encart.style.width = "350px";
		encart.style.left = "500px";
		encart.style.top = "-150px";
		encart.style.borderTop = "solid 1px #cccccc";
		encart.style.borderRight = "solid 1px #999999";
		encart.style.borderBottom = "solid 1px white";
		encart.style.borderLeft = "solid 1px black";
		encart.style.padding = "5px";
		var texte = document.createElement("h3"); texte.style.color = "#08f"; texte.style.textDecoration = "underline"; texte.style.fontWeight = "bold"; texte.style.paddingLeft = "50px"; texte.appendChild(document.createTextNode("Connexion :")); encart.appendChild(texte); texte = document.createElement("p");
		switch (choix) {
			case "regpseudo" :
				texte.style.color = "red";
				texte.appendChild(document.createTextNode("Le pseudonyme n'est pas valide ! (erreur dans l'écriture du pseudonyme)"));
				encart.appendChild(texte);
				texte = document.createElement("input");
				texte.setAttribute("type", "button");
				texte.setAttribute("value", "Retourner au blog");
				texte.setAttribute("onclick", "javascript:retourBlog();");
				encart.appendChild(texte);
				break;
			case "regpwd" :
				texte.style.color = "red";
				texte.appendChild(document.createTextNode("Le mot de passe n'est pas valide ! (erreur dans l'écriture du mot de passe)"));
				encart.appendChild(texte);
				texte = document.createElement("input");
				texte.setAttribute("type", "button");
				texte.setAttribute("value", "Retourner au blog");
				texte.setAttribute("onclick", "javascript:retourBlog();");
				encart.appendChild(texte);
				break;
			case "regajax" :
				texte.style.color = "red";
				texte.appendChild(document.createTextNode("Vous n'êtes pas inscrit !"));
				encart.appendChild(texte);
				texte = document.createElement("input");
				texte.setAttribute("type", "button");
				texte.setAttribute("value", "Retourner au blog");
				texte.setAttribute("onclick", "javacript:retourBlog();");
				encart.appendChild(texte);
				break;
			case "go_site" :
				texte.style.color = "green";
				texte.appendChild(document.createTextNode("La connexion a réussie. La page va se recharger automatiquement."));
				encart.appendChild(texte);
				texte = document.createElement("input");
				texte.setAttribute("type", "button");
				texte.setAttribute("value", "Ne pas attendre");
				texte.setAttribute("onclick", "javascript:location.replace('" + adress_info + "');");
				encart.appendChild(texte);
				window.setTimeout("location.replace('" + adress_info + "');", 2100);
				break;
			default :
				texte.appendChild(document.createTextNode("Partie en cours de construction"));
				encart.appendChild(texte);
				break;
		}
		document.body.appendChild(encart);
		for (var i = 0;i < 12;i++) {
			var temp = -150 + i*25;
			window.setTimeout("encart.style.top = '" + temp + "px';", 50*i);
		}
	}
	var retourBlog = function () {
		for (var i = 0; i < 6; i++) window.setTimeout("document.getElementById('voile').style.opacity = 0." + (8 - i), 18*i); for (var i = 0; i < 12; i++) { var temp = 125 - i*25; window.setTimeout("document.getElementById('encart').style.top = '" + temp + "px';", 50*i); } window.setTimeout("document.body.removeChild(document.getElementById('voile'));", 690); window.setTimeout("document.body.removeChild(document.getElementById('encart'));", 690); document.body.style.overflow = "auto"; }
</script><table><tr><td><label for="pseudo_arcans">Pseudonyme : </label></td><td><input type="text" id="pseudo_arcans" maxlength="15" /></td></tr><tr><td><label for="passwd_arcans">Mot de passe : </label></td><td><input type="password" id="passwd_arcans" maxlength="15" /></td></tr></table><input type="button" value="Connexion" onclick="javascript:connectFun();" />
